package com.shujia.scala

import scala.collection.mutable
import scala.collection.mutable.HashSet

object Demo17ScalaSet {
  /**
   * Set 集合
   * 无序、元素不能重复（会自动去重）、不可变
   *
   */
  def main(args: Array[String]): Unit = {
    val set: Set[Int] = Set(1, 1, 2, 2, 2, 3, 4, 4, 5, 6, 7, 9, 8)
    println(set(9)) // 判断元素是否在集合中
    println(set)

    println(set.max)
    println(set.min)
    println(set.size)
    println(set.head)
    println(set.tail)
    println(set.take(3))
    // 。。。。。

    val set1: Set[Int] = set.map(_ + 1)
    println(set1)

    // Set可以理解为数学中的集合
    // 交集 并集 差集
    val s1 = Set(1, 2, 3, 4, 5)
    val s2 = Set(3, 4, 5, 6, 7)

    println(s1 & s2) // 交集
    println(s1 | s2) // 并集
    println(s1 &~ s2) // 差集

    /**
     * 可变Set -> HashSet
     */

    val hSet: mutable.HashSet[Int] = HashSet(1, 2, 2, 3, 4, 5, 6, 6)
    println(hSet)

    hSet.add(5)
    hSet.add(7)
    println(hSet)

    hSet.remove(2)

    hSet.+=(8)
    hSet.-=(5)

    println(hSet)

    hSet.foreach(println)

    // 过滤 会返回一个新的HashSet
    val hSet2: mutable.HashSet[Int] = hSet.filter(_ % 2 == 0)

    println(hSet2)

  }

}
